﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _064.App
{
    //定义一个类，专门存储操作数据库数据的方法（增删查改）
     class SqlDA
    {
        SqlConnection _con;
        SqlCommand _cmd;
        //把创建的SqlConnection对象的过程写入构造函数中，这里创建SqlDA对象，调用方法时就自动连接了数据库
        public SqlDA()
        {
            _con = new SqlConnection("server=.;database=Mydatabase;user=sa;pwd=35683568");//连接本地SQL数据库
        }
        //添加数据方法
        public void addData(SqlData data)
        {

        }
        //查询数据的方法1
        public List<SqlData> select()
        {
            List<SqlData> list = new List<SqlData>();
            //连接数据库，访问数据
            _cmd = _con.CreateCommand();
            _con.Open();
            _cmd.CommandText = "select * from Students";
            SqlDataReader dr = _cmd.ExecuteReader();
            //将数据库数据转换成Sqldata类型，并放入list集合中
            while (dr.Read())
            {
                SqlData data = new SqlData();
                data.Code = dr["code"].ToString();
                data.Name = dr["name"].ToString();
                data.Pwd = dr["pwd"].ToString();
                list.Add(data);
            }
            _con.Close();
            return list;
        }
        //查询数据的方法2，需要一个字符串参数，与上面的函数构成重载
        public List<SqlData> select(string uname)
        {
            List<SqlData> list = new List<SqlData>();
            //连接数据库，访问数据库
            _cmd = _con.CreateCommand();
            _con.Open();
            _cmd.CommandText = "select * from Students where name like '%" + uname + "%'";
            SqlDataReader dr = _cmd.ExecuteReader();
            //将访问到的数据库转换成SqlData类型，并放入List集合中
            while(dr.Read())
            {
                SqlData data = new SqlData();
                data.Code = dr["code"].ToString();
                data.Name = dr["name"].ToString();
                data.Pwd = dr["pwd"].ToString();
                list.Add(data);
            }
            _con.Close();
            return list;
        }

        //修改数据的方法
        public void update(SqlData data)
        {
            //打开连接，拼接命令
            _con.Open();
            _cmd = _con.CreateCommand();
            _cmd.CommandText = "update users set name=@name,pwd=@pwd where code=@code";
            _cmd.Parameters.Add("@name", data.Name);
            _cmd.Parameters.Add("@pwd", data.Pwd);
            _cmd.Parameters.Add("@code", data.Code);
            //执行命令，关闭连接
            _cmd.ExecuteNonQuery();
            _con.Close();
        }
        //删除数据的方法
        public void delete(SqlData data)
        {
            //打开连接，拼接命令
            _con.Open();
            _cmd = _con.CreateCommand();
            _cmd.CommandText = "delete from users where code=@code";
            _cmd.Parameters.Add("@code", data.Code);
            //执行命令，关闭连接
            _cmd.ExecuteNonQuery();
            _con.Close();
        }
            
    }
}
